package cn.edu.ncut.cs.springboot.petmanagementsystem.mapper;

import cn.edu.ncut.cs.springboot.petmanagementsystem.pojo.Message;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 消息通知Mapper接口
 */
@Mapper
public interface MessageMapper extends BaseMapper<Message> {

    /**
     * 获取用户消息列表（分页）
     *
     * @param userId 用户ID
     * @param offset 偏移量
     * @param pageSize 每页大小
     * @return 消息列表
     */
    List<Message> selectByUserId(@Param("userId") Long userId,
                                  @Param("offset") Integer offset,
                                  @Param("pageSize") Integer pageSize);

    /**
     * 获取用户消息总数
     *
     * @param userId 用户ID
     * @return 消息总数
     */
    Integer countByUserId(@Param("userId") Long userId);

    /**
     * 获取用户未读消息数量
     *
     * @param userId 用户ID
     * @return 未读消息数量
     */
    Integer countUnreadByUserId(@Param("userId") Long userId);

    /**
     * 标记消息为已读
     *
     * @param id 消息ID
     * @param userId 用户ID
     * @return 影响的行数
     */
    Integer markAsRead(@Param("id") Long id, @Param("userId") Long userId);

    /**
     * 标记所有消息为已读
     *
     * @param userId 用户ID
     * @return 影响的行数
     */
    Integer markAllAsRead(@Param("userId") Long userId);
}
